/*! \file ShaderBuilder.h
 *	\brief <write description for ShaderBuilder.h>
 *
 *	created:	2010/04/25
 *	created:	25:4:2010   15:26
 *	filename: 	c:\Users\venn\Documents\tactics-engine\libs\gd\ShaderBuilder.h
 *	file path:	c:\Users\venn\Documents\tactics-engine\libs\gd
 *	file base:	ShaderBuilder
 *	file ext:	h
 *	author:		Vitalii Trubchaninov
 *				venngraydog@gmail.com
 */

#ifndef _gd_SHADERBUILDER_H_
#define _gd_SHADERBUILDER_H_

#pragma once

#include <utils/PTree.h>

namespace tt{
namespace gd{

class PixelShader;
class VertexShader;

class ShaderBuilder : NonCopyable
{
public:
	ShaderBuilder();
	virtual ~ShaderBuilder();

	SharedPtr<PixelShader> createPixelShader(const utils::PTree& desc);
	SharedPtr<VertexShader> createVertexShader(const utils::PTree& desc);

protected:
	virtual SharedPtr<PixelShader> onCreatePixelShader(const utils::PTree& desc) = 0;
	virtual SharedPtr<VertexShader> onCreateVertexShader(const utils::PTree& desc) = 0;
};

} //namespace gd
} //namespace tt
#include "ShaderBuilder.inl"

#endif //_gd_SHADERBUILDER_H_